import java.util.Scanner;
import java.util.Arrays;
/**
	编程自定义数组扩容规则，当已存储元素数量达到总容量的80%时，扩容1.5倍
	思路：
		1.要计算数组当前已存储的容量是否达到80%
		2.若达到则定义新数组，新数组的容量是旧数组的1.5倍
		3.将旧数组内容拷贝到新数组中
		4.若未达到则不扩容
*/
public class ArrayExpansion{
	public static void main(String[] args) {
		//定义一个数组
		int[] array = new int[10];
		//获取数组长度
		int length = array.length;
		//从键盘输入要存储多少个数
		System.out.println("请输入要存储数据的个数：");
		Scanner sc = new Scanner(System.in);
		int numbers = sc.nextInt();
		//判断是否需要扩容，若小于容量的80%，不扩容
		if(numbers < length * 0.8){
			for (int i = 0; i<numbers; i++) {
				array[i] = i;
			}
		}
		//若大于等于容量的80%，则要扩容
		else{
			for (int i = 0; i<length*0.8 - 1; i++) {
				array[i] = i;
			}
			//开始扩容 
			array = expansion(array,length);
			for (int i = (int)(length*0.8) - 1; i<numbers; i++) {
				array[i] = i;
			}

		}
		//输出
		System.out.println(Arrays.toString(array));
	}
	public static int[] expansion(int[] array,int n){
		System.out.println("达到扩容条件，开始扩容......");
		//new一个新数组，这里将扩容后的容量向上取整
		int[] new_array = new int[(int)Math.ceil(n*1.5)];
		//将旧数组中的数复制到新数组中
		System.arraycopy(array,0,new_array,0,n);
		//返回
		return new_array;
	}
}